package cn.wolfcode.luowowo.mgrsite.job;

//1:定义任务执行器
//RedisDataPersistenceJob

import cn.wolfcode.luowowo.article.service.IStrategyDetailService;
import cn.wolfcode.luowowo.article.vo.StrategyStatisPersistenceVO;
import cn.wolfcode.luowowo.cache.service.IStrategyStatisRedisService;
import cn.wolfcode.luowowo.cache.util.RedisKeys;
import cn.wolfcode.luowowo.cache.vo.StrategyStatisVO;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * redis数据持久化
 */
//@Component
public class RedisDataPersistenceJob {
    @Reference
    private IStrategyDetailService strategyDetailService;
    @Reference
    private IStrategyStatisRedisService strategyStatisRedisService;
    /*Cron表达式是一个字符串，字符串以5或6个空格隔开，分为6或7个域，每一个域代表一个含义，Cron有如下两种语法格式：
        1） Seconds Minutes Hours DayofMonth Month DayofWeek Year
            秒      分       时      号       月     周几    年份
　　    2）Seconds Minutes  Hours DayofMonth Month DayofWeek
           秒      分       时      号       月     周几
           详细链接:https://www.cnblogs.com/javahr/p/8318728.html*/
    //0 0 0 1/1 * ?
    /*@Scheduled 表示定时任务标签
    * cron:定时任务计划,指定定时任务执行时间周期*/
    @Scheduled(cron="0/10 * * * * ?")
    public void redisDataPersistence(){
        System.out.println("--------vo的持久化操作---------");
        //查询出所有的vo的key
        String vos = RedisKeys.STRATEGY_TYPE_VIEWNUM.join("*");
        List<StrategyStatisVO> list = strategyStatisRedisService.getStatisVOs(vos);

       //updateStatis存储到数据库中
        for (StrategyStatisVO vo : list) {
            StrategyStatisPersistenceVO statisPersistenceVo = new StrategyStatisPersistenceVO();
            BeanUtils.copyProperties(vo,statisPersistenceVo);
            strategyDetailService.updateStatis(statisPersistenceVo);
        }
    }
}